S3初心者向け『例 1: バケット所有者がユーザーにバケットのアクセス許可を付与』をやってみた
概要
大阪オフィスのちゃだいんです。
手を動かして学ぶために、公式ドキュメントのチュートリアルをやってみました。
今回は、Amazon S3です。内容は以下のものです。
例 1: バケット所有者がユーザーにバケットのアクセス許可を付与 - Amazon Simple Storage Service
この演習では、AWS アカウントがバケットを所有し、アカウントに IAM ユーザーが存在します。ユーザーはデフォルトでは何のアクセス許可も持ちません。ユーザーが何らかのタスクを実行するには、親アカウントがそのためのアクセス許可をユーザーに付与する必要があります。バケット所有者とユーザーが属する親アカウントは同じです。したがって、AWS アカウントは、バケットポリシー、ユーザーポリシー、またはその両方を使用して、バケットへのアクセス許可をユーザーに付与できます。一部のアクセス許可はバケットポリシーを使用し、他のアクセス許可はユーザーポリシーを使用して付与します。
前提条件
AWS CLIが使用できる環境で行ってます。
早速やってみた
1.S3バケット と IAMユーザー を作成する
- まずはS3バケットを作成します。
- 基本追加設定を入れずにシンプルなバケット190820testbucket
を作成しました。
- 次に、IAMユーザーの
tutorialuser
を作成します。
- アクセス許可の設定では、一旦何もせずに次に進めます。
- 作成前の確認画面では「このユーザーにはアクセス権限がありません」と表示されていてOKです。
- IAMユーザーが作成できました。
2.アクセス許可を与える
- ここでは、S3バケットにバケットポリシーを追加し、IAMユーザーにインラインポリシーを追加してアクセス許可を与えます。
-
まずは、S3バケットにバケットポリシーを付与します。
-
S3コンソールから見ると今はまだ空の状態です。
- ドキュメントに記載のものを一部変更してます。AWSアカウントはダミーで
123456789012
、IAMユーザー名をtutorialuser
、バケット名を190821testbucket
にしています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/tutorialuser" }, "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::190821testbucket" ] }, { "Sid": "statement2", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/tutorialuser" }, "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::190821testbucket/*" ] } ] }
- こんな感じで挿入できました。
- 次はIAMユーザーのインラインポリシーです。
-
ドキュメントに記載のものを一部変更してます。バケット名を
190821testbucket
にしています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PermissionForObjectOperations", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::190821testbucket/*" ] } ] }
- 登録するとこんな感じになりました。
- ポリシーの名前は
tutorialusers3access
と付けます。
3.アクセス許可をテストする
- 準備は整いましたのでテストしてみます。
-
まずは
~/.aws/credentials
の設定ファイルにtutorialuser
のプロファイルを追加します。(***はダミーです)
[profile tutorialuser] aws_access_key_id = *********** aws_secret_access_key = *************** region = ap-northeast-1
- 次に、
s3api put-object
コマンドを実行して、画像ファイルがアップロードされるか確認します。 -
ちなみに対象の画像はカレーの画像です。ここ最近食べた中で一番辛かったです。
- CLIコマンドはこちらです。
$ aws s3api put-object --bucket 190821testbucket --key TooHotCurry.jpg --body TooHotCurry.jpg --profile tutorialuser --region ap-northeast-1
- すると、ちゃんと画像がアップロードされました。
感想
今回は、初心者向けの中でもかなり簡単な方のチュートリアルだったと思います。S3は奥が深いので、他のものも一通りやってみたいと感じました。
誰かのお役に立てば幸いです。それではまた、大阪オフィスのちゃだいんでした。